cmake_minimum_required(VERSION 3.4.1)
project("tracker_native_cpp")

# 文件建议使用 android studio 进行打开，否则可能会有冒红的东西
# 文件建议使用 android studio 进行打开，否则可能会有冒红的东西

# 需要指向公共目录下的 C++ 文件
# 如若存在多个源文件，那么都需就要与此建立连接

# 针对不同架构，生成不同的so库类型。
# 因为考虑到在cpp中获取堆栈的方式不尽相同
if (${CMAKE_ANDROID_ARCH_ABI} STREQUAL "arm64-v8a")
    set(
            TARGET_LINK_FILE
            ../../../../native/arm64-v8a/tracker.cpp
    )
elseif (${CMAKE_ANDROID_ARCH_ABI} STREQUAL "armeabi-v7a")
    set(
            TARGET_LINK_FILE
            ../../../../native/armeabi-v7a/tracker.cpp
    )
else ()
    message(FATAL_ERROR "----------> make be not support architecture: ${CMAKE_ANDROID_ARCH_ABI}")
endif ()

# set语法： set (name, value)

set(
        COMMON_FILES
        ../../../../native/base/base_tracker.cpp # 基类
        ../../../../native/tracker_manager.cpp # 管理cpp的工具类
        ../../../../native/utils/file_save_util.cpp # 文件存储
)

# 针对不同架构，生成不同的so库类型。
# 因为考虑到在cpp中获取堆栈的方式不尽相同
if (${CMAKE_ANDROID_ARCH_ABI} STREQUAL "arm64-v8a")
    set(
            TARGET_LINK_FILE
            ../../../../native/arm64-v8a/tracker.cpp
    )
elseif (${CMAKE_ANDROID_ARCH_ABI} STREQUAL "armeabi-v7a")
    set(
            TARGET_LINK_FILE
            ../../../../native/armeabi-v7a/tracker.cpp
    )
else ()
    message(FATAL_ERROR "----------> make be not support architecture: ${CMAKE_ANDROID_ARCH_ABI}")
endif ()

set(
        SOURCE_FILES
        ${COMMON_FILES}
        ${TARGET_LINK_FILE}
)

## release 包保留帧指针
# set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-omit-frame-pointer")

# 禁用优化和启用帧指针, 所有模式
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -fno-omit-frame-pointer")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -fno-omit-frame-pointer")

## 指定为c11编译
set(CMAKE_CXX_STANDARD 11)

# 定义共享库并添加源文件
add_library(
        tracker-lib # 共享库名称
        SHARED # 生成共享库
        ${SOURCE_FILES}
)

# 查找系统库 log（Android 特有）
find_library(log-lib log)

# 链接库（例如 log 库）
target_link_libraries(tracker-lib ${log-lib})
